In operations, scheduling of tasks can greatly affect system performance. For example, if multiple tasks are pending and such tasks have varying priorities, then scheduling is intended to attend to each of the multiple tasks while also addressing the priorities of the tasks.
In recent years, queuing schedulers have been widely used in networks or in any other environment to meet performance requirements (e.g. latency, delay, jitter, fairness, etc.) of real-time applications, such as voice and video transmissions etc.
Scheduling may be implemented in many different ways. In one example, a round robin scheduling schedules or serves or processes the tasks such that tasks are ordered according to their priorities and then sent to a device driver one at a time based on such priorities. Similarly, groups or sets of tasks are served based on weights assigned to each prioritized queues in weighted round robin scheduling.
However, conventional scheduling algorithms may schedule certain tasks ahead of higher priority tasks because of the structure of the operation. In conventional round robin scheduling, weighted round robin scheduling, or similar processes packets may continue to be scheduled from a queue after there are no more packets remaining in the higher priority queue.
The simplest scheduler is a round robin scheduler. A round robin scheduler maintains one queue for each class, and serves each queue in round-robin fashion, taking one packet (of any size) from each non-empty queue in turn. In a round robin scheduler, a source sending long packets generally gets more bandwidth than a source sending short packets. In other words, the round-robin scheme is fair in terms of number of packets per queue, but might not be fair in terms of bandwidth per queue. Furthermore, a round-robin scheduler does not have a means to give more bandwidth to one queue over another queue.
Other schedulers include weighted fair queuing (WFQ), deficit round robin (DRR), and weighted round robin (WRR) which are the most widely used methods for IP-based data network schedulers. Schedulers are used in many types of networking equipment, such as: modems, Wi-Fi access points (APs), base stations, packet data serving nodes (PDSNs), routers/switches, etc.
DRR and WRR schedulers serve each queue in round-robin fashion, but a fixed amount of credit is given to each queue. Each queue is allowed to send up to the given credit in each turn. Therefore, fairness in terms of bandwidth among the queues may be obtained.
The credit-based approach is also able to give preference to one queue over the other queues, by assigning different amounts of credit to different queues.
Thus, in credit-based schedulers such as DRR and WRR, a credit or weight is given to each queue in order to achieve a desired bandwidth allocation among the queues. The size of the credit or weight can have a significant impact on the performance of the scheduler.
Until now, all the above mentioned schedulers or method for scheduling stick to a particular order of selecting queues. However, no effective solution exists to improve the selection of queue dynamically, so that the performance of the scheduler is improved which leads to an effective utilization of bandwidth.